/*
 * @Author: luqinghua
 * @Date: 2025-06-11 11:46:03
 * @LastEditors: luqinghua
 * @LastEditTime: 2025-06-11 16:19:16
 * @FilePath: \express-api-example\src\app.ts
 * @Description:
 */
import path from 'path';
import express from 'express';
import SQLiteUtils from './sqlite';
import { setupApiRoutes } from './apitest';

const app = express();
const port = 3000;
const dbFile = 'mydatabase.db'; // 数据库文件路径，和项目里的 mydatabase.db 对应

// 创建 SQLite 工具类实例
// 拼接当前目录下的 data.json 文件路径
const dbPath = path.join(__dirname, dbFile);
const dbUtils = new SQLiteUtils(dbPath);

// 中间件，解析 JSON 请求体
app.use(express.json());

// 初始化数据库并启动服务器
async function startServer() {
  try {
    await dbUtils.connect();
    await dbUtils.initTables();
    // 配置 API 路由
    setupApiRoutes(app, dbUtils);

    app.listen(port, () => {
      console.log(`服务器运行在 http://localhost:${port}`);
    //   console.log('当前文件的绝对路径:', __filename);
    //   console.log('当前文件的目录路径:', __dirname);
    //   console.log('工作目录:', process.cwd());
      console.log('数据库路径:', dbPath);
    });

    // 监听进程中断信号，关闭数据库连接
    process.on('SIGINT', async () => {
      await dbUtils.close();
      process.exit(0);
    });
  } catch (err: any) {
    console.error('启动服务器失败:', err.message);
    process.exit(1);
  }
}

startServer();
